﻿#define _CRT_SECURE_NO_WARNINGS  1
//一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
//一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
#include"Binary.h"
int main()
{
	//手搓构建二叉树
	BNode q;
	BNode* node1 = StrBinaryTree(&q, 1);
	BNode* node2 = StrBinaryTree(&q, 2);
	BNode* node3 = StrBinaryTree(&q, 3);
	BNode* node4 = StrBinaryTree(&q, 4);
	BNode* node5 = StrBinaryTree(&q, 5);
	BNode* node6 = StrBinaryTree(&q, 6);
	BNode* node7 = StrBinaryTree(&q, 7);
	node1->left = node2;
	node1->right = node3;
	node2->left = node4;
	node2->right = node5;
	node3->left = node6;
	node3->right = node7;
	//前序遍历
	FroOrder(node1);
	printf("\n");
	InOrder(node1);
	printf("\n");
	AftOrder(node1);
	printf("\n");
	//层序遍历
	SeqOrder(node1);
	printf("\n");
	//判断是否是完全二叉树
	printf("%d ", IsallTree(node1));
	//判断节点总数
	int n = TreeNode(node1);
	printf("\n%d", n);
	printf("\n");
	//总叶子数
	int x = TreeLeaf(node1);
	printf("%d ", x);
	//第K层的叶子数
	//int c =  KTreeLeaf(node1, x);
	/*printf("%d", c);*/
	//查找val值为x的节点
	BNode* node = FindNode(node1, 3);
	printf("%p", node);
	return 0;
}